/**
 * 服务配置文件
 * 用于管理各种服务地址配置
 */

// 运行环境检测
function detectEnvironment() {
  // 检查当前URL是否包含穿透服务IP
  const isTunnelEnv = window.location.host.includes('47.109.146.201');
  return {
    isDev: process.env.NODE_ENV === 'development',
    isTunnel: isTunnelEnv
  };
}

const env = detectEnvironment();

// MinIO服务配置
export const MINIO_CONFIG = {
  // MinIO本地地址 - 开发环境
  localEndpoint: 'http://localhost:9090',
  // MinIO穿透地址 - 生产环境 (使用TCP端口6300)
  tunnelEndpoint: 'http://47.109.146.201:6300',
  // 获取当前环境下正确的MinIO服务地址
  getEndpoint: () => {
    return env.isTunnel ? MINIO_CONFIG.tunnelEndpoint : MINIO_CONFIG.localEndpoint;
  },
  // 转换MinIO路径为可访问路径
  convertPath: (path) => {
    if (!path) return '';
    // 移除可能存在的协议和服务器部分
    if (path.includes('://')) {
      const parts = path.split('/');
      // 获取bucket和路径部分
      return parts.slice(3).join('/');
    }
    return path;
  }
};

// 图片服务配置
export const IMAGE_SERVICE = {
  // 获取图片代理URL
  getProxyUrl: (originalUrl) => {
    const { API_CONFIG } = require('./env');
    return `${API_CONFIG.baseURL}/image/proxy?url=${encodeURIComponent(originalUrl)}`;
  },
  
  // 替换MinIO地址为当前环境对应的地址
  replaceMinIOUrl: (url) => {
    if (!url) return url;
    
    // 提取路径部分
    let path = url;
    
    // 如果URL包含协议和服务器地址，移除这些部分
    if (url.includes('://')) {
      // 格式: http://server:port/bucket/path/to/file.ext
      const urlObj = new URL(url);
      // 获取路径部分（移除开头的斜杠）
      path = urlObj.pathname.startsWith('/') ? urlObj.pathname.substring(1) : urlObj.pathname;
    }
    
    // 确保路径不以斜杠开头
    if (path.startsWith('/')) {
      path = path.substring(1);
    }
    
    // 构建完整的MinIO URL
    return `${MINIO_CONFIG.getEndpoint()}/${path}`;
  }
};

export default {
  MINIO_CONFIG,
  IMAGE_SERVICE
}; 